import pdfplumber
from docx import Document
import os
import sys

def pdf_to_word(pdf_path, word_path=None):
    """
    将PDF文件转换为Word文档（使用pdfplumber，对中文支持更好）
    
    Args:
        pdf_path (str): PDF文件路径
        word_path (str, optional): 输出的Word文件路径。如果未提供，将在同目录下生成同名.docx文件
    """
    
    # 检查PDF文件是否存在
    if not os.path.exists(pdf_path):
        print(f"错误：PDF文件 '{pdf_path}' 不存在")
        return False
    
    # 生成输出文件路径
    if word_path is None:
        base_name = os.path.splitext(pdf_path)[0]
        word_path = base_name + '.docx'
    
    try:
        # 创建Word文档
        doc = Document()
        
        # 使用pdfplumber读取PDF文件
        with pdfplumber.open(pdf_path) as pdf:
            total_pages = len(pdf.pages)
            
            # 提取每一页文本
            for page_num, page in enumerate(pdf.pages):
                # 提取文本内容
                text = page.extract_text()
                
                if text and text.strip():  # 如果页面有文本内容
                    # 添加文本内容
                    doc.add_paragraph(text)
                    
                    # 添加分页符（除了最后一页）
                    if page_num < total_pages - 1:
                        doc.add_page_break()
                else:
                    print(f"第 {page_num + 1} 页没有提取到文本内容（可能是扫描件或图片）")
        
        # 保存Word文档
        doc.save(word_path)
        print(f"转换成功！文件已保存为: {word_path}")
        print(f"共转换了 {total_pages} 页")
        return True
            
    except Exception as e:
        print(f"转换过程中出现错误: {e}")
        return False

def main():
    """主函数，处理命令行参数"""
    if len(sys.argv) < 2:
        print("使用方法: python pdfToWord.py <PDF文件路径> [输出Word文件路径]")
        print("示例: python pdfToWord.py document.pdf")
        print("示例: python pdfToWord.py document.pdf output.docx")
        return
    
    pdf_path = sys.argv[1]
    word_path = sys.argv[2] if len(sys.argv) > 2 else None
    
    pdf_to_word(pdf_path, word_path)

if __name__ == "__main__":
    main()